package com.xiyu.service.vo.mailbox.mail;

import com.xiyu.service.vo.mailbox.mail.baseVO.MailboxMailBase;
import com.xiyu.service.vo.mailbox.mail.baseVO.MailboxMailFromBase;
import com.xiyu.service.vo.mailbox.mail.baseVO.MailboxMailResourceBase;
import com.xiyu.service.vo.mailbox.mail.baseVO.MailboxMailContentBase;
import com.xiyu.service.vo.mailbox.mail.baseVO.MailboxMailReceiverBase;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;

import jakarta.validation.Valid;
import com.xiyu.service.enums.common.CommonStatusEnum;
import com.xiyu.service.framework.validation.InEnum;

@Schema(description = "获取邮件详情")
@Data
@AllArgsConstructor
public class MailGetMailDetailOutput extends MailboxMailBase {

    @Schema(description = "邮件资源")
    @Valid
    private List<resource> resources;

    @Schema(description = "邮件收件人")
    @Valid
    private List<receiver> receivers;

    @Schema(description = "邮件正文")
    @Valid
    private content content;

    @Schema(description = "邮件抄送人")
    @Valid
    private List<carbonReceiver> carbonReceivers;

    @Schema(description = "邮件主键ID")
    private Long id;

    @Schema(description = "邮件标签")
    @Valid
    private List<label> labels;

    @Schema(description = "邮件发件人")
    @Valid
    private List<from> froms;

    @Schema(description = "邮件收件人")
    @Data
    public static class receiver extends MailboxMailReceiverBase {
    }

    @Schema(description = "邮件正文")
    @Data
    public static class content extends MailboxMailContentBase {
    }

    @Schema(description = "")
    @Data
    public static class labelFolder {

        @Schema(description = "颜色")
        private String color;

        @Schema(description = "文件夹名称")
        private String name;
    }

    @Schema(description = "邮件标签")
    @Data
    public static class label {

        @Schema(description = "")
        private labelFolder labelFolder;
    }

    @Schema(description = "邮件资源")
    @Data
    public static class resource extends MailboxMailResourceBase {
    }

    @Schema(description = "邮件发件人")
    @Data
    public static class from extends MailboxMailFromBase {
    }

    @Schema(description = "邮件抄送人")
    @Data
    public static class carbonReceiver extends MailboxMailReceiverBase {
    }
}